﻿#ifndef EntityManager_h__
#define EntityManager_h__

/********************************************************************
	创建于:		2011/04/05
	创建于:		5:4:2011   15:05
	基本文件:	EntityManager
	文件扩展:	h
	作者:		王凯
	
	目的:		对象管理类。提供对象的统一管理接口。
*********************************************************************/

#include <map>
#include <cassert>

class BaseGameEntity;
#define EntityMgr EntityManager::Instance()

class EntityManager
{
private:
	 typedef std::map<int, BaseGameEntity*> EntityMap;

	 EntityMap m_EntityMap;

	 EntityManager(){}

	 //禁用拷贝和赋值
	 EntityManager(const EntityManager&);
	 EntityManager& operator=(const EntityManager&);
public:
	static EntityManager* Instance();

	void            RegisterEntity(BaseGameEntity* NewEntity);

	//返回ID对应的对象的指针
	BaseGameEntity* GetEntityFromID(int id)const;

	//通过对象指针删除指定对象
	void            RemoveEntity(BaseGameEntity* pEntity);

	//清空数据
	void            Reset(){m_EntityMap.clear();}
};
#endif // EntityManager_h__